package util;

import cn.chenchao.eshop.common.entity.Entity;
import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

/**
 * @encoding : UTF-8
 * @Time : 2020/11/22 14:43
 * @Author : Chen Chao
 * @File : eshop.util.JSONUtil.java
 * @Software : IntelliJ IDEA
 * @since : 1.8
 * json工具类处理和json相关的所有内容
 */
public class JsonUtil {
    /**
     * 把对象转为Json格式的字符串
     * @param entity 要转的实体对象,实体的属性必须设置get方法
     * @return 返回的字符串
     */
    public static String entity2Json(Object entity){
        return JSON.toJSONString(entity);
    }

    /**
     * 把实体对象列表转成Json字符串
     * @param entityList  要转的实体对象列表
     * @return 返回的字符串
     */
    public static String entityList2Json(List<?> entityList){
        //调用本类的静态方法
        return entity2Json(entityList);
    }

    /**
     * 把json字符串转成指定类型的对象
     * @param json 要转的字符串
     * @param tClass  要转成的对象类型
     * @param <T>  类型
     * @return 返回指定类型的对象
     */
    public static <T> T json2Entity(String json,Class<T> tClass){
        return JSON.parseObject(json,tClass);
    }

    /**
     * 把Json数组转换成指定类型的对象列表
     * @param json 要转的json字符串
     * @param tClass 要转成的对象类型
     * @param <T>  类型
     * @return  返回指定类型的对象的列表
     */
    public static <T> List<T> jsonArray2List(String json ,Class<T> tClass){
        return JSON.parseArray(json,tClass) ;
    }
}

class Test {
    public static void main(String[] args) {
        /*测试entity2Json(entity)*/
        Entity entity = new Entity();
        entity.setCreateTime("15:06");
        entity.setId("001");
        System.out.println(JsonUtil.entity2Json(entity));
        //{"createTime":"15:06","id":"001","isDel":false}
        System.out.println("====================");

        /*测试entityList2Json(entities)*/
        ArrayList<Entity> entities = new ArrayList<>();
        entities.add(entity);
        System.out.println(JsonUtil.entityList2Json(entities));
        //[{"createTime":"15:06","id":"001","isDel":false}]
        //[]表示json数组，{}表示对象
        System.out.println("====================");

        /*测试json2Entity(String json,Class<T> tClass)*/
        String json1="{\"createTime\":\"15:30\",\"id\":\"001\",\"isDel\":false}";
        Entity entity1 = JsonUtil.json2Entity(json1, Entity.class);
        System.out.println(entity1.getCreateTime());
        System.out.println("====================");

        /*测试 jsonArray2List(String json ,Class<T> tClass)*/
        String json2="[{\"createTime\":\"15:36\",\"id\":\"001\",\"isDel\":false}," +
                "{\"createTime\":\"15:38\",\"id\":\"001\",\"isDel\":false}]";
        List<Entity> entities1 = JsonUtil.jsonArray2List(json2, Entity.class);
        for (Entity entityOne : entities1) {
            System.out.println(entityOne.getCreateTime());
        }


    }

}